The subject matter discussed in the background section should not be assumed to be prior art merely as a result of its mention in the background section. Similarly, a problem mentioned in the background section or associated with the subject matter of the background section should not be assumed to have been previously recognized in the prior art. The subject matter in the background section merely represents different approaches, which in and of themselves may also be inventions.
Typical data storage systems are configured to store and manage data objects such as files, documents, records and the like. Such systems support search services that allow a user to search for and to retrieve data objects from the system. The user typically creates Boolean filters to facilitate a search process by combining search terms using simple logical operators. For example, a simple Boolean filter “tropical AND island” can be used to retrieve files that contain both terms “tropical” and “island,” while another simple Boolean filter “tropical NOT island” can be used to retrieve files that contain the term “tropical,” but not “island.” Boolean filters can also be paired with file properties, such as a file's author, date created, date updated, etc.
For more complex searches, instead of search terms, the Boolean filter can combine search conditions using logical operators. The search conditions themselves can be filters, and are typically configured by users skilled in database management and/or computer programming. For example, a complex filter can be represented by the following expression:(Status does not contain “Duplicate, Never, Not a bug”)AND(Type of Record contains “User Story”)AND(Assigned To equals((“Joe” OR “Jane”)AND “Smith”))This type of expression is typically referred to as a filter logic expression. To simplify this expression, each search condition can be associated with an identifier, such as a number and/or an alphabetical letter, and the filter logic expression can be rewritten using identifiers and logical operators.
Some search services can be configured to provide an interface that allows the user to create a Boolean filter to retrieve data objects from a storage system. For example, FIG. 1A illustrates a standard user interface 100a that can be used to create a simplified filter logic expression 110 that represents a complex Boolean filter. The user interface 100a can include a condition list 102 that lists several search conditions 104 defined by the user or a file system administrator. Each search condition 104 is associated with an identifier 106, and the search conditions 104 are listed in sequential order by their respective identifiers 106. In this example, the identifiers 106 are numbers and the search conditions 104 are listed in ascending numerical order. The user interface 100a also includes the filter logic expression 110 expressed in terms of the identifiers 106 associated with the search conditions 104, as opposed to the search conditions themselves. Accordingly, in a single interface, the user can view the search conditions 104 and the simplified filter logic expression 110 that represents the complex Boolean filter.
Typically, the file system administrator or the user is allowed to add or remove search conditions 104 from the condition list 102. For example, when the file system is updated such that a particular search condition 104 becomes obsolete or inapplicable, or when it is determined that a certain search condition 104 should not be used, the obsolete or restricted search condition 104 must be removed from the list 102 so that when a new filter logic expression 110 is created, the new expression does not contain the obsolete or restricted search condition 104. In these situations, search services can be configured to allow the file system administrator or the user to add or remove search conditions 104 from the condition list 102. For example, in FIG. 1B, a standard user interface 100b that can be used to remove a search condition 104a associated with the identifier “4” is illustrated. In this case, the search condition, “Assigned To equals ‘Joe Smith,’” can be removed when “Joe Smith” is no longer employed by a company and data objects assigned to “Joe Smith” are reassigned to another employee.
When the removal is implemented, e.g., by selecting the “next” button, the search service automatically removes the search condition 104a from the condition list 102. Moreover, for each search condition subsequent to the removed search condition 104a, the search service can modify the identifier 106 associated with each subsequent search condition 104b, 104c so that the sequential order of the list 102 is preserved. For example, in FIG. 1B, the search conditions 104b, 104c subsequent to the removed search condition 104a are associated with the identifiers “5” and “6” respectively. When the removal is implemented, the search service can reassociate the subsequent search conditions 104b, 104c with the identifiers “4” and “5” respectively, so that the sequential order of the condition list 102 is preserved and gaps in the ordering are not present. FIG. 1C illustrates an interface 100c that can be displayed after the removal is implemented.
The removal of a search condition 104a, while simple and easily implemented, can affect filter logic expressions 106 created prior to the removal of the search condition 104a. For example, in FIG. 1C, the filter logic expression 106 that was applicable in FIG. 1A and FIG. 1B is no longer valid because it refers to an identifier, e.g., “6,” that is no longer associated with a search condition. Moreover, some of the identifiers in the expression 106 are now associated with different search conditions. For example, prior to the removal of the search condition 104a, the search condition 104b, e.g., “Status does not contain ‘Duplicate, Never, Not a bug,’” is associated with the identifier “5” in FIG. 1B; whereas after the removal, the same search condition 104b is now associated with identifier “4” in FIG. 1C. Because of this modification, the Boolean filter represented by the filter logic expression 106 in FIG. 1C is completely different from the Boolean filter represented by the filter logic expression 106 in FIG. 1B, and no longer represents the data object for which the user is searching.
Thus, when a search condition 104 is removed from the condition list 102, the user must closely examine the filter logic expression 106 to delete any reference to the removed search condition 104a and must manually correct any reference errors and/or syntax errors resulting from the removal. Moreover, the user must determine whether the remaining identifiers in the expression 106 refer to the appropriate search conditions 104 and if not, the user must manually update the identifier(s) in the filter logic expression 106 to ensure that the appropriate data objects are retrieved. This process can be tedious and error prone, particularly when the filter logic expression 106 comprises a long string of search conditions 104.